package 常见算法.非视频算法;

/**
 * @Date 2024/6/16 21:43
 * @description: 矩阵置零: 用到辅助数组
 * .            https://leetcode.cn/problems/set-matrix-zeroes/
 * @Author LittleNight
 */
public class likou73 {

    // 使用行辅助数组和列辅助数组. b 站有讲解
    public void setZeroes(int[][] matrix) {
        int m = matrix.length, n = matrix[0].length;
        boolean[] row = new boolean[m];
        boolean[] colunm = new boolean[n];
        // 先填标记数组
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                if(matrix[i][j] == 0) {
                    // 标记这一行这一列为 true
                    row[i] = colunm[j] = true;
                }
            }
        }

        // 在遍历原数组
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                // 判断标记数组, 从而判断是否要更新原数组为 0
                if(row[i] || colunm[j]) {
                    matrix[i][j] = 0;
                }
            }
        }
    }
}
